package gestoremulte.pack;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.GregorianCalendar;

import javax.crypto.NoSuchPaddingException;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnDismissListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.telephony.TelephonyManager;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
/*
 * Classe addetta all'invio-stampa del verbale
 */
public class VerbaleActivity extends Activity {

	private TextView nVerbaleText;
	private TextView data_oraText;
	private TextView via_comuneText;
	private Spinner sottoscritti;
	private EditText cognome_nome;
	private EditText editNato;
	
	private EditText editdataNascitaConducente;
	private EditText residenzaTrasg;
	private EditText provinciaResidenzaEdit;
	private EditText provinciaNascitaEdit;
	private Spinner documento;
	private EditText ndocumento;
	private EditText dataRilascioCatPatEdit;
	private EditText rilasciatoDa;
	private EditText veicoloEdit;
	private TextView targatextVerbale2;
	private EditText PossessoreNomeCognomeEdit;
	private EditText NascitaPossessoreEdit;
	private EditText ProvPossessoreEdit;
	private EditText editdataNascitaPossessore;
	private EditText residentePossessoreEdit;
	private EditText ProvPossessoreresidenzaEdit;
	private EditText normaviolata;
	private EditText dichiaraEdit;
	private TextView sanzioneEdit;
	private Button buttonInvia;
	private Button buttonStampa;
	private Button buttonGeneralitaPossessore;
	private Button SalvaButton;
	private double lat;
	private double lon;
	
	private boolean stampapressed;
	private boolean start;
	
	static final int DATE_DIALOG_ID= 1;
	static final int DATE_DIALOG_ID2= 2;
	static final int DATE_DIALOG_ID3= 3;
	
	private static final int ENABLE_BLUETHOOT = 100;
	private static final String SERVICE_URL = "https://91.226.109.144/GestioneMulteServer/verbale/aggiungi";
	private String LocationFile = Environment.getExternalStorageDirectory()+File.separator+"GestioneMulte"+File.separator+"Foto"+File.separator;
	private final static String LocationACIPRA = Environment.getExternalStorageDirectory()+File.separator+"GestioneMulte"+File.separator+"Files"+ File.separator+"ACIPRA"+File.separator;
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.verbale2);
        
        start = true;
        nVerbaleText = (TextView) findViewById(R.id.nVerbaleText);
        data_oraText = (TextView) findViewById(R.id.data_oraText);
        via_comuneText = (TextView) findViewById(R.id.via_comuneText);
        cognome_nome = (EditText) findViewById(R.id.cognome_nome);
        editNato = (EditText) findViewById(R.id.editNato);
        editdataNascitaConducente = (EditText) findViewById(R.id.editdataNascitaConducente);
        residenzaTrasg = (EditText) findViewById(R.id.editTextresidenzaTrasgressore);
        provinciaResidenzaEdit = (EditText) findViewById(R.id.provinciaResidenzaEdit);
        provinciaNascitaEdit = (EditText) findViewById(R.id.provinciaNascitaEdit);
        ndocumento = (EditText) findViewById(R.id.editTextnumeroDoc);
        dataRilascioCatPatEdit = (EditText) findViewById(R.id.RilascioCatPatEdit);
        rilasciatoDa = (EditText) findViewById(R.id.editTextRilascioDaDoc);
        veicoloEdit = (EditText) findViewById(R.id.veicoloEdit);
        targatextVerbale2 = (TextView) findViewById(R.id.targatextVerbale2);
        PossessoreNomeCognomeEdit = (EditText) findViewById(R.id.PossessoreNomeCognomeEdit);
        NascitaPossessoreEdit = (EditText) findViewById(R.id.NascitaPossessoreEdit);
        ProvPossessoreEdit = (EditText) findViewById(R.id.ProvPossessoreEdit);
        editdataNascitaPossessore = (EditText) findViewById(R.id.editdataNascitaPossessore);
        residentePossessoreEdit = (EditText) findViewById(R.id.residentePossessoreEdit);
        ProvPossessoreresidenzaEdit = (EditText) findViewById(R.id.ProvPossessoreresidenzaEdit);
        normaviolata = (EditText) findViewById(R.id.normaviolataedit);
        dichiaraEdit = (EditText) findViewById(R.id.dichiaraEdit);
        sanzioneEdit = (TextView) findViewById(R.id.sanzioneEdit);
        
        stampapressed = false;
        
        buttonInvia =(Button) findViewById(R.id.buttonInvia);
        buttonInvia.setOnClickListener(InviaListener);

        SalvaButton = (Button) findViewById(R.id.buttonSalva);
        SalvaButton.setOnClickListener(SalvaButtonListener);
        
        sottoscritti =(Spinner) findViewById(R.id.spinner1);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.AutoriMulta, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sottoscritti.setAdapter(adapter);
        sottoscritti.setOnItemSelectedListener(new SottoscrittiSelectedListener());
        
        
        documento = (Spinner) findViewById(R.id.spinner2);
        
        ArrayAdapter<CharSequence> adapterDocumento = ArrayAdapter.createFromResource(
                this, R.array.documenti, android.R.layout.simple_spinner_item);
        adapterDocumento.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        documento.setAdapter(adapterDocumento);
        documento.setOnItemSelectedListener(new DocumentiSelectedListener());
        
        buttonStampa = (Button) findViewById(R.id.buttonStampa);
        buttonStampa.setOnClickListener(buttonStampaInviaListener);
        
        buttonGeneralitaPossessore = (Button) findViewById(R.id.buttonGeneralitaPossessore);
        buttonGeneralitaPossessore.setOnClickListener(buttonGeneralitaPossInviaListener);
        
        // gestione date per semplificare l'intervento dell'uomo
        editdataNascitaConducente.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
            	
            	
            	if (hasFocus) {
                    showDialog(DATE_DIALOG_ID);
                } else {
                    dismissDialog(DATE_DIALOG_ID);
                }
            }
        });
        
        dataRilascioCatPatEdit.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
            	
            	
            	if (hasFocus) {
                    showDialog(DATE_DIALOG_ID2);
                } else {
                    dismissDialog(DATE_DIALOG_ID2);
                }
            }
        });
        
        
        editdataNascitaPossessore.setOnFocusChangeListener(new View.OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
            	
            	
            	if (hasFocus) {
                    showDialog(DATE_DIALOG_ID3);
                } else {
                    dismissDialog(DATE_DIALOG_ID3);
                }
            }
        });
        // verifica se l'activity è stata fatta partire da RiassuntoMulte
        if (!getIntent().getBooleanExtra("fromDB", false)){
        	String targ = getIntent().getStringExtra("targa");
	        targatextVerbale2.setText(targ);
	        via_comuneText.setText(getIntent().getStringExtra("via"));
	        data_oraText.setText(getIntent().getStringExtra("data_ora"));
	        nVerbaleText.setText(getIntent().getStringExtra("nverbale"));
	        normaviolata.setText(getIntent().getStringExtra("infrazioni"));
	        sanzioneEdit.setText(getIntent().getDoubleExtra("sanzione", 0)+ " euro");
	        lat = getIntent().getDoubleExtra("lat", 1000);
	        lon = getIntent().getDoubleExtra("lon", 1000);
	        
	        File file = new File(LocationACIPRA+targ+".jpg");
    		if (file != null){
    			EncryptionDecription decrypt = new EncryptionDecription();
    			try {
					RispostaACIPRA acipra = decrypt.decryptLoadACIPRA(targ);
					PossessoreNomeCognomeEdit.setText(acipra.getDenominazione());
					NascitaPossessoreEdit.setText(acipra.getComune_nascita());
					ProvPossessoreEdit.setText(acipra.getProvincia_nascita());
					editdataNascitaPossessore.setText(acipra.getData_nascita_other_format());
					residentePossessoreEdit.setText(acipra.getResidenza());
					ProvPossessoreresidenzaEdit.setText(acipra.getProvincia_residenza());
					
				} catch (InvalidKeyException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NoSuchAlgorithmException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NoSuchPaddingException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					Toast.makeText(this, "non sono state effettuate visure ACI PRA", Toast.LENGTH_LONG).show();
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
    		}
    			
        }
        else{
        	
        	Verbale x =(Verbale) getIntent().getParcelableExtra("verbale");
        	 nVerbaleText.setText(x.getNumeroVerbale());
             data_oraText.setText(x.getData_ora());
             via_comuneText.setText(x.getLuogoTrasgressione());
             cognome_nome.setText(x.getNome_cognome_trasgressore());
             editNato.setText(x.getNascitaTrasgressore());
             editdataNascitaConducente.setText(x.getDataNascitaTrasgr());
             residenzaTrasg.setText(x.getResidenzaTrasgr());
             provinciaResidenzaEdit.setText(x.getProvResidenzaTrasgr());
             provinciaNascitaEdit.setText(x.getProvNascitaTrasgr());
             ndocumento.setText(x.getnDocTrasgr());
             dataRilascioCatPatEdit.setText(x.getDocumentoRilasciatoData());
             rilasciatoDa.setText(x.getDocumentoRilasciatoDa());
             veicoloEdit.setText(x.getVeicolo());
             targatextVerbale2.setText(x.getTarga());
             PossessoreNomeCognomeEdit.setText(x.getNome_cognome_possessore());
             NascitaPossessoreEdit.setText(x.getNascitaPossessore());
             ProvPossessoreEdit.setText(x.getProvNascitaPoss());
             editdataNascitaPossessore.setText(x.getDataNascitaPoss());
             residentePossessoreEdit.setText(x.getResidenzaPoss());
             ProvPossessoreresidenzaEdit.setText(x.getProvResidenzaPoss());
             normaviolata.setText(x.getViolazioni());
             dichiaraEdit.setText(x.getDichiara());
             sanzioneEdit.setText(x.getSanzione()+" euro");
        	 lat = x.getLat();
        	 lon = x.getLon();
             ArrayAdapter<CharSequence> myAdap = (ArrayAdapter<CharSequence>) sottoscritti.getAdapter(); 
             int spinnerPosition = myAdap.getPosition(x.getSottoscritti());

           
             sottoscritti.setSelection(spinnerPosition);
             
             ArrayAdapter<CharSequence> myAdap2 = (ArrayAdapter<CharSequence>) documento.getAdapter(); 
             int spinnerPosition2 = myAdap2.getPosition(x.getDocumento());

           
             documento.setSelection(spinnerPosition2);

        }
        
        new Thread(new Runnable() {
            public void run() {
                
            	while (start){
            		try {
						Thread.sleep(15000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
            		if (!start)
            			break;
            		Verbale verbale = new Verbale (nVerbaleText.getText().toString(),data_oraText.getText().toString(),via_comuneText.getText().toString(),
                			sottoscritti.getSelectedItem().toString(),cognome_nome.getText().toString(),
                			editNato.getText().toString(),provinciaNascitaEdit.getText().toString(),editdataNascitaConducente.getText().toString(),
                			residenzaTrasg.getText().toString(),provinciaResidenzaEdit.getText().toString(),documento.getSelectedItem().toString(),
                			ndocumento.getText().toString(),dataRilascioCatPatEdit.getText().toString(),rilasciatoDa.getText().toString(),
                			veicoloEdit.getText().toString(),targatextVerbale2.getText().toString(),PossessoreNomeCognomeEdit.getText().toString(),
                			NascitaPossessoreEdit.getText().toString(),ProvPossessoreEdit.getText().toString(),editdataNascitaPossessore.getText().toString(),
                			residentePossessoreEdit.getText().toString(),ProvPossessoreresidenzaEdit.getText().toString(),normaviolata.getText().toString(),
                			dichiaraEdit.getText().toString(),getIntent().getDoubleExtra("sanzione", 0),VariabiliCondiviseApplication.matricola,"","","",lat,lon);
            		
    	        	EncryptionDecription encr = new EncryptionDecription();
    	        	
    	        	try {
    					encr.encryptSaveVerbale(verbale,true);
    				} catch (InvalidKeyException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (NoSuchAlgorithmException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (NoSuchPaddingException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    	        	Log.e("Salvato", "ok");
            	}
            }
        }).start();
        
        

	}
	
	protected void onRestart(){
    	super.onRestart();
    	if (VariabiliCondiviseApplication.restored){
    		
    		TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
            VariabiliCondiviseApplication.IMEI = telephonyManager.getDeviceId();
			VariabiliCondiviseApplication.online = false;
			
			CustomDialogLoginOffline dialog = new CustomDialogLoginOffline(this);
		    dialog.setCancelable(false);
		    dialog.show();
    	}
    }
	
	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu2, menu);
        return true;
    }
	
	@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.icon: 
            	CustomDialogLoginOnline dialog = new CustomDialogLoginOnline(this);
            	dialog.setOnDismissListener(new OnDismissListener() {

					@Override
					public void onDismiss(DialogInterface dialog) {
						if (VariabiliCondiviseApplication.online == true){
							buttonInvia.setEnabled(true);
							//buttonStampa.setEnabled(true);
	
				    	}
						
					}
            	});
            	dialog.show();
                break;
           
        }
        return true;
    }
	
	protected void onStart(){
    	super.onStart();
    	
    	if (VariabiliCondiviseApplication.online == false){
    		buttonInvia.setEnabled(false);
    		//buttonStampa.setEnabled(false);
    		
    		
    	}
    	
    	else{
    		buttonInvia.setEnabled(true);
    		//buttonStampa.setEnabled(true);
    		
    	}
    	start = true;
	}
	// invia tutto quanto compresa l'immagine compressa
	private OnClickListener InviaListener = new OnClickListener() {
        public void onClick(View v) {
        	
        	//GregorianCalendar time = new GregorianCalendar();            
          	//String data = getDateTimeCurrent(time);
        	Verbale verbale = null;
        	if (VariabiliCondiviseApplication.fotoScattata){
        		String foto_base64;
        		Bitmap foto = BitmapFactory.decodeFile(LocationFile+getIntent().getStringExtra("nverbale")+".jpg"); 
        		ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                foto.compress(Bitmap.CompressFormat.JPEG, 60, baos); //foto è l'oggetto Bitmap   
                byte[] image = baos.toByteArray();

                foto_base64 = Base64.encodeToString(image,Base64.DEFAULT);
        	
                verbale =  new Verbale (nVerbaleText.getText().toString(),data_oraText.getText().toString(),via_comuneText.getText().toString(),
        			sottoscritti.getSelectedItem().toString(),cognome_nome.getText().toString(),
        			editNato.getText().toString(),provinciaNascitaEdit.getText().toString(),editdataNascitaConducente.getText().toString(),
        			residenzaTrasg.getText().toString(),provinciaResidenzaEdit.getText().toString(),documento.getSelectedItem().toString(),
        			ndocumento.getText().toString(),dataRilascioCatPatEdit.getText().toString(),rilasciatoDa.getText().toString(),
        			veicoloEdit.getText().toString(),targatextVerbale2.getText().toString(),PossessoreNomeCognomeEdit.getText().toString(),
        			NascitaPossessoreEdit.getText().toString(),ProvPossessoreEdit.getText().toString(),editdataNascitaPossessore.getText().toString(),
        			residentePossessoreEdit.getText().toString(),ProvPossessoreresidenzaEdit.getText().toString(),normaviolata.getText().toString(),
        			dichiaraEdit.getText().toString(),getIntent().getDoubleExtra("sanzione", 0),VariabiliCondiviseApplication.matricola,VariabiliCondiviseApplication.IMEI,foto_base64,VariabiliCondiviseApplication.codice,lat,lon);
        	}
        	
        	else
        		verbale = new Verbale (nVerbaleText.getText().toString(),data_oraText.getText().toString(),via_comuneText.getText().toString(),
            			sottoscritti.getSelectedItem().toString(),cognome_nome.getText().toString(),
            			editNato.getText().toString(),provinciaNascitaEdit.getText().toString(),editdataNascitaConducente.getText().toString(),
            			residenzaTrasg.getText().toString(),provinciaResidenzaEdit.getText().toString(),documento.getSelectedItem().toString(),
            			ndocumento.getText().toString(),dataRilascioCatPatEdit.getText().toString(),rilasciatoDa.getText().toString(),
            			veicoloEdit.getText().toString(),targatextVerbale2.getText().toString(),PossessoreNomeCognomeEdit.getText().toString(),
            			NascitaPossessoreEdit.getText().toString(),ProvPossessoreEdit.getText().toString(),editdataNascitaPossessore.getText().toString(),
            			residentePossessoreEdit.getText().toString(),ProvPossessoreresidenzaEdit.getText().toString(),normaviolata.getText().toString(),
            			dichiaraEdit.getText().toString(),getIntent().getDoubleExtra("sanzione", 0),VariabiliCondiviseApplication.matricola,VariabiliCondiviseApplication.IMEI,"",VariabiliCondiviseApplication.codice,lat,lon);
        	
        	
        	// viene fatto partire l'invio tramite comunicazione asincrona
        	String sampleURL = SERVICE_URL ;
          	 
            WebServiceComunication wst = new WebServiceComunication(WebServiceComunication.POST_VERBALE, v.getContext(), "invio Verbale..."); 
            wst.setVerbale(verbale);          
            wst.execute(new String[] { sampleURL });
            
            if (wst.isEsitoComunicazione()){
	            MyDatabase db=new MyDatabase(v.getContext());
	            db.open();
	            db.updateNVerbale(getIntent().getStringExtra("nverbale"),1);
	            db.close();
            }
        }
	 };
	 
	 
	 
	 private OnClickListener buttonStampaInviaListener = new OnClickListener() {
	        public void onClick(View v) {
	        	
	        	BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
	    		if (mBluetoothAdapter == null) {
	    			Toast.makeText(v.getContext(), "Questo dispositivo non supporta il bluethoot", Toast.LENGTH_SHORT).show();
	    		}
	    		
	    		else{
	    			if (!mBluetoothAdapter.isEnabled()) {
	    			    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
	    			    startActivityForResult(enableBtIntent, ENABLE_BLUETHOOT);
	    			    
	    			}
	    			
	    			else{
	    				
	    				Verbale verbale = new Verbale (nVerbaleText.getText().toString(),data_oraText.getText().toString(),via_comuneText.getText().toString(),
	                			sottoscritti.getSelectedItem().toString(),cognome_nome.getText().toString(),
	                			editNato.getText().toString(),provinciaNascitaEdit.getText().toString(),editdataNascitaConducente.getText().toString(),
	                			residenzaTrasg.getText().toString(),provinciaResidenzaEdit.getText().toString(),documento.getSelectedItem().toString(),
	                			ndocumento.getText().toString(),dataRilascioCatPatEdit.getText().toString(),rilasciatoDa.getText().toString(),
	                			veicoloEdit.getText().toString(),targatextVerbale2.getText().toString(),PossessoreNomeCognomeEdit.getText().toString(),
	                			NascitaPossessoreEdit.getText().toString(),ProvPossessoreEdit.getText().toString(),editdataNascitaPossessore.getText().toString(),
	                			residentePossessoreEdit.getText().toString(),ProvPossessoreresidenzaEdit.getText().toString(),normaviolata.getText().toString(),
	                			dichiaraEdit.getText().toString(),getIntent().getDoubleExtra("sanzione", 0),VariabiliCondiviseApplication.matricola,"","","",lat,lon);
			        	
			        	stampapressed = true;
			        	
			        	Printer printer = new Printer(v.getContext());
			        	printer.printVerbale(verbale);
	    			}
	    		}
	        }
		 };
	 
		 // Velocizza la gestione dei dati del possessore
	 private OnClickListener buttonGeneralitaPossInviaListener = new OnClickListener() {
	        public void onClick(View v) {
	        	
	        	PossessoreNomeCognomeEdit.setText(cognome_nome.getText().toString());
	            NascitaPossessoreEdit.setText(editNato.getText().toString());
	            ProvPossessoreEdit.setText(provinciaNascitaEdit.getText().toString());
	            editdataNascitaPossessore.setText(editdataNascitaConducente.getText().toString());
	            residentePossessoreEdit.setText(residenzaTrasg.getText().toString());
	            ProvPossessoreresidenzaEdit.setText(provinciaResidenzaEdit.getText().toString());
	        	
	        }
	 };
	 // Salva i dati nel DB o modifica nel caso il verbale già esistesse
	 private OnClickListener SalvaButtonListener = new OnClickListener() {
	        public void onClick(View v) {
	        
	        	
	        	Verbale verbale = new Verbale (nVerbaleText.getText().toString(),data_oraText.getText().toString(),via_comuneText.getText().toString(),
            			sottoscritti.getSelectedItem().toString(),cognome_nome.getText().toString(),
            			editNato.getText().toString(),provinciaNascitaEdit.getText().toString(),editdataNascitaConducente.getText().toString(),
            			residenzaTrasg.getText().toString(),provinciaResidenzaEdit.getText().toString(),documento.getSelectedItem().toString(),
            			ndocumento.getText().toString(),dataRilascioCatPatEdit.getText().toString(),rilasciatoDa.getText().toString(),
            			veicoloEdit.getText().toString(),targatextVerbale2.getText().toString(),PossessoreNomeCognomeEdit.getText().toString(),
            			NascitaPossessoreEdit.getText().toString(),ProvPossessoreEdit.getText().toString(),editdataNascitaPossessore.getText().toString(),
            			residentePossessoreEdit.getText().toString(),ProvPossessoreresidenzaEdit.getText().toString(),normaviolata.getText().toString(),
            			dichiaraEdit.getText().toString(),getIntent().getDoubleExtra("sanzione", 0),VariabiliCondiviseApplication.matricola,"","","",lat,lon);
	        	
	        	 MyDatabase db=new MyDatabase(v.getContext());
	        	 db.open();
	        	 db.insertVerbale(verbale);
	        	 db.updateNVerbale(verbale.getNumeroVerbale(),1);
	        	 db.close();
	        	 
	        	 // Scrittura Elemento nella Lista
	        	 ElementoLista el = new ElementoLista(verbale.getNumeroVerbale(),verbale.getData_ora(),"Verbale");
	        	 WriteReadElementoLista nuovoElemento = new WriteReadElementoLista();
	        	 nuovoElemento.writeElemento(el);
	        	 
	        	 EncryptionDecription encr = new EncryptionDecription();
	        	 try {
					encr.encryptSaveVerbale(verbale,false);

				} catch (InvalidKeyException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NoSuchAlgorithmException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NoSuchPaddingException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
	        }
	 };
		 
	// Spinner
	 public class SottoscrittiSelectedListener implements OnItemSelectedListener {

		    public void onItemSelected(AdapterView<?> parent,
		        View view, int pos, long id) {
		      Toast.makeText(parent.getContext(), "il sottoscritto è " +
		          parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show();
		    }

		    public void onNothingSelected(AdapterView parent) {
		      // Do nothing.
		    }
	};
	
	public class DocumentiSelectedListener implements OnItemSelectedListener {

	    public void onItemSelected(AdapterView<?> parent,
	        View view, int pos, long id) {
	      Toast.makeText(parent.getContext(), "il documento in questione è " +
	          parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show();
	    }

	    public void onNothingSelected(AdapterView parent) {
	      // Do nothing.
	    }
};

	private static String getDateTimeCurrent(GregorianCalendar current){
		 SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		 String data = format.format(current.getTime());
		 return data;
		 
	}
	
	protected void onPause(){
		super.onPause();
		if (VariabiliCondiviseApplication.backClick || stampapressed)
			VariabiliCondiviseApplication.restored = false;
		else
			VariabiliCondiviseApplication.restored = true;
		VariabiliCondiviseApplication.backClick = false;
		stampapressed = false;
		start = false;
	}
	
	@Override
	public void onBackPressed() {
	 	super.onBackPressed();
		VariabiliCondiviseApplication.backClick = true;
		Log.e("PROVA", "OK");
	}

	 protected Dialog onCreateDialog(int id) {  
	        switch (id) {  
	        case DATE_DIALOG_ID:  
	            return new DatePickerDialog(this, mDateSetListener, 1930, 0, 1); 
	        case DATE_DIALOG_ID2:
	        	return new DatePickerDialog(this, mDateSetListener2, 1930, 0, 1);
	        case DATE_DIALOG_ID3:
	        	return new DatePickerDialog(this, mDateSetListener3, 1930, 0, 1);	
	        }  
	        return null;  
	    }  
	
	protected DatePickerDialog.OnDateSetListener mDateSetListener =  
	new DatePickerDialog.OnDateSetListener() {  
	
	    public void onDateSet(DatePicker view, int year,   
	                          int monthOfYear, int dayOfMonth) {  
	      
	    		editdataNascitaConducente.setText(year +"-"+ (monthOfYear+1)+ "-"+ dayOfMonth);
	    	
	    	
	    	
	    }  
	};  
	
	protected DatePickerDialog.OnDateSetListener mDateSetListener2 =  
		new DatePickerDialog.OnDateSetListener() {  
		
		    public void onDateSet(DatePicker view, int year,   
		                          int monthOfYear, int dayOfMonth) {  
		       
		    	
		    	
		    	dataRilascioCatPatEdit.setText(year +"-"+ (monthOfYear+1)+ "-"+ dayOfMonth);
		    	
		    	
		    }  
		};  
			
	protected DatePickerDialog.OnDateSetListener mDateSetListener3 =  
		new DatePickerDialog.OnDateSetListener() {  
		
		    public void onDateSet(DatePicker view, int year,   
		                          int monthOfYear, int dayOfMonth) {  
		       
		    	
		    	
		    	editdataNascitaPossessore.setText(year +"-"+ (monthOfYear+1)+ "-"+ dayOfMonth);
		    	
		    	
		    }  
		}; 
		
	@Override
	 protected void onActivityResult (int requestCode, int resultCode, Intent data){
		 
		 if (requestCode == ENABLE_BLUETHOOT){
			 if (resultCode == RESULT_OK ){
				 Verbale verbale = new Verbale (nVerbaleText.getText().toString(),data_oraText.getText().toString(),via_comuneText.getText().toString(),
             			sottoscritti.getSelectedItem().toString(),cognome_nome.getText().toString(),
             			editNato.getText().toString(),provinciaNascitaEdit.getText().toString(),editdataNascitaConducente.getText().toString(),
             			residenzaTrasg.getText().toString(),provinciaResidenzaEdit.getText().toString(),documento.getSelectedItem().toString(),
             			ndocumento.getText().toString(),dataRilascioCatPatEdit.getText().toString(),rilasciatoDa.getText().toString(),
             			veicoloEdit.getText().toString(),targatextVerbale2.getText().toString(),PossessoreNomeCognomeEdit.getText().toString(),
             			NascitaPossessoreEdit.getText().toString(),ProvPossessoreEdit.getText().toString(),editdataNascitaPossessore.getText().toString(),
             			residentePossessoreEdit.getText().toString(),ProvPossessoreresidenzaEdit.getText().toString(),normaviolata.getText().toString(),
             			dichiaraEdit.getText().toString(),getIntent().getDoubleExtra("sanzione", 0),VariabiliCondiviseApplication.matricola,"","","",lat,lon);
		        	
		        	stampapressed = true;
		        	
		        	Printer printer = new Printer(this);
		        	printer.printVerbale(verbale);
			 }
			 else
				 Toast.makeText(this.getApplicationContext(), "Deve essere attivato il bluethoot per accedere a questa funzionalità", Toast.LENGTH_SHORT).show();
			 
		 }
		 
	 }
	
}
